#include "dlist.h"
#include "system.h"
#include <cstdio>

void
InsertItem(int which, DLList *list, int key){
    printf("%d 插入元素 %d \n", which, key);
    list->SortedInsert(NULL, key);
}

void
RemoveItem(int which, DLList *list, int key){
    printf("%d 删除了元素 %d \n", which, key);
    list->SortedRemove(key);
}


void 
PrintList(int which, DLList *list)
{
    printf("Print List from %d: ", which);
    list->ShowList();
}

//! 按照实验手册要求的两个函数

// 需要插入的N个元素
int arr[4] = {3, 6, 1, 4}; 
// 插入N个元素
void
InsertNItem(int N, DLList* L){
    int i;
    for(i=0; i<N;i++){
        printf("添加元素key %d \n", arr[i]);
        L->SortedInsert(NULL, arr[i]);
        // 1
        currentThread->Yield(); //! 这个地放做强制线程切换，测试链表插入过程中发生线程切换的情况。 
    }
}
// 移除元素并打印
void
RemoveNItem(int N, DLList* L){
    int i;
    for(i=0;i<N;i++){
        DLLElement* p = (DLLElement*)(L->Remove(NULL));
        printf("删除元素key %d \n", p->key);
    }

}
